18099

90 分钟

#C 语言标准库头文件 stdint.h

这个头文件提供 固定长度的整数类型

#示例

#include <stdio.h> #include <inttypes.h> #include <stdint.h> int main(void) { // 8位有符号和无符号整数 int8_t small_int = -128; uint8_t small_uint = 255; // 16位有符号和无符号整数 int16_t medium_int = -32768; uint16_t medium_uint = 65535; // 32位有符号和无符号整数 int32_t large_int = -2147483648; uint32_t large_uint = 4294967295; // 64位有符号和无符号整数 int64_t huge_int = -9223372036854775807LL; uint64_t huge_uint = 18446744073709551615ULL; // 最快的最小宽度类型 int_fast8_t fast_small = 127; uint_fast16_t fast_medium = 65535; // 最小宽度类型 int_least8_t least_small = -128; uint_least16_t least_medium = 65535; // 最大宽度整数类型 intmax_t max_int = INTMAX_MAX; uintmax_t max_uint = UINTMAX_MAX; // 打印各种类型的值 printf("8-bit signed: %" PRIi8 ", unsigned: %" PRIu8 "\n", small_int, small_uint); printf("16-bit signed: %" PRIi16 ", unsigned: %" PRIu16 "\n", medium_int, medium_uint); printf("32-bit signed: %" PRIi32 ", unsigned: %" PRIu32 "\n", large_int, large_uint); printf("64-bit signed: %" PRIi64 ", unsigned: %" PRIu64 "\n", huge_int, huge_uint); printf("Fast types signed: %" PRIiFAST8 ", unsigned: %" PRIuFAST16 "\n", fast_small, fast_medium); printf("Least types signed: %" PRIiLEAST8 ", unsigned: %" PRIuLEAST16 "\n", least_small, least_medium); printf("Max int: %" PRId64 ", max uint: %" PRIu64 "\n", max_int, max_uint); // 打印一些类型的尺寸 printf("Size of int8_t: %zu bytes\n", sizeof(int8_t)); printf("Size of int16_t: %zu bytes\n", sizeof(int16_t)); printf("Size of int32_t: %zu bytes\n", sizeof(int32_t)); printf("Size of int64_t: %zu bytes\n", sizeof(int64_t)); return 0; }

运行结果:

8-bit signed: -128, unsigned: 255
16-bit signed: -32768, unsigned: 65535
32-bit signed: -2147483648, unsigned: 4294967295
64-bit signed: -9223372036854775807, unsigned: 18446744073709551615
Fast types signed: 127, unsigned: 65535
Least types signed: -128, unsigned: 65535
Max int: 9223372036854775807, max uint: 18446744073709551615
Size of int8_t: 1 bytes
Size of int16_t: 2 bytes
Size of int32_t: 4 bytes
Size of int64_t: 8 bytes

#类型

类型标准说明
int8_tC998 位有符号整数
int16_tC9916 位有符号整数
int32_tC9932 位有符号整数
int64_tC9964 位有符号整数
intptr_tC99位数和指针一样的有符号整数
intmax_tC99位数最多的有符号整数
uint8_tC998 位无符号整数
uint16_tC9916 位无符号整数
uint32_tC9932 位无符号整数
uint64_tC9964 位无符号整数
uintptr_tC99位数和指针一样的无符号整数
uintmax_tC99位数最多的无符号整数
int_fast8_tC99不少于 8 位的性能最快的有符号整数
int_fast16_tC99不少于 16 位的性能最快的有符号整数
int_fast32_tC99不少于 32 位的性能最快的有符号整数
int_fast64_tC99不少于 64 位的性能最快的有符号整数
int_least8_tC99不少于 8 位的位数最少的有符号整数
int_least16_tC99不少于 16 位的位数最少的有符号整数
int_least32_tC99不少于 32 位的位数最少的有符号整数
int_least64_tC99不少于 64 位的位数最少的有符号整数
uint_fast8_tC99不少于 8 位的性能最快的无符号整数
uint_fast16_tC99不少于 16 位的性能最快的无符号整数
uint_fast32_tC99不少于 32 位的性能最快的无符号整数
uint_fast64_tC99不少于 64 位的性能最快的无符号整数
uint_least8_tC99不少于 8 位的位数最少的无符号整数
uint_least16_tC99不少于 16 位的位数最少的无符号整数
uint_least32_tC99不少于 32 位的位数最少的无符号整数
uint_least64_tC99不少于 64 位的位数最少的无符号整数

#

标准说明
INT8_CC99将值扩展为 int_least8_t 类型的整型常量表达式(字面量)
INT16_CC99将值扩展为 int_least16_t 类型的整型常量表达式(字面量)
INT32_CC99将值扩展为 int_least32_t 类型的整型常量表达式(字面量),例如 INT32C(233) 可能扩展为 233L
INT64_CC99将值扩展为 int_least64_t 类型的整型常量表达式(字面量),例如 INT64C(233) 可能扩展为 233LL
INTMAX_CC99将值扩展为 intmax_t 类型的整型常量表达式(字面量)
UINT8_CC99将值扩展为 uint_least8_t 类型的整型常量表达式(字面量)
UINT16_CC99将值扩展为 uint_least16_t 类型的整型常量表达式(字面量),例如 UINT32C(233) 可能扩展为 233U
UINT32_CC99将值扩展为 uint_least32_t 类型的整型常量表达式(字面量),例如 UINT32C(233) 可能扩展为 233UL
UINT64_CC99将值扩展为 uint_least64_t 类型的整型常量表达式(字面量),例如 UINT64C(233) 可能扩展为 233ULL
UINTMAX_CC99将值扩展为 uintmax_t 类型的整型常量表达式(字面量)

#常量

类型范围标准说明
INT8_MINC99int8_t 的最小值
INT16_MINC99int16_t 的最小值
INT32_MINC99int32_t 的最小值
INT64_MINC99int64_t 的最小值
INTPTR_MINC99intptr_t 的最小值
INTMAX_MINC99intmax_t 的最小值
INT_FAST8_MINC99int_fast8_t 的最小值
INT_FAST16_MINC99int_fast16_t 的最小值
INT_FAST32_MINC99int_fast32_t 的最小值
INT_FAST64_MINC99int_fast64_t 的最小值
INT_LEAST8_MINC99int_least8_t 的最小值
INT_LEAST16_MINC99int_least16_t 的最小值
INT_LEAST32_MINC99int_least32_t 的最小值
INT_LEAST64_MINC99int_least64_t 的最小值
INT8_MAXC99int8_t 的最大值
INT16_MAXC99int16_t 的最大值
INT32_MAXC99int32_t 的最大值
INT64_MAXC99int64_t 的最大值
INTPTR_MAXC99intptr_t 的最大值
INTMAX_MAXC99intmax_t 的最大值
INT_FAST8_MAXC99int_fast8_t 的最大值
INT_FAST16_MAXC99int_fast16_t 的最大值
INT_FAST32_MAXC99int_fast32_t 的最大值
INT_FAST64_MAXC99int_fast64_t 的最大值
INT_LEAST8_MAXC99int_least8_t 的最大值
INT_LEAST16_MAXC99int_least16_t 的最大值
INT_LEAST32_MAXC99int_least32_t 的最大值
INT_LEAST64_MAXC99int_least64_t 的最大值
UINT8_MAXC99uint8_t 的最大值
UINT16_MAXC99uint16_t 的最大值
UINT32_MAXC99uint32_t 的最大值
UINT64_MAXC99uint64_t 的最大值
UINTPTR_MAXC99uintptr_t 的最大值
UINTMAX_MAXC99uintmax_t 的最大值
UINT_FAST8_MAXC99uint_fast8_t 的最大值
UINT_FAST16_MAXC99uint_fast16_t 的最大值
UINT_FAST32_MAXC99uint_fast32_t 的最大值
UINT_FAST64_MAXC99uint_fast64_t 的最大值
UINT_LEAST8_MAXC99uint_least8_t 的最大值
UINT_LEAST16_MAXC99uint_least16_t 的最大值
UINT_LEAST32_MAXC99uint_least32_t 的最大值
UINT_LEAST64_MAXC99uint_least64_t 的最大值
类型宽度标准说明
INT8_WIDTHC23int8_t 的位宽度
INT16_WIDTHC23int16_t 的位宽度
INT32_WIDTHC23int32_t 的位宽度
INT64_WIDTHC23int64_t 的位宽度
INTPTR_WIDTHC23intptr_t 的位宽度
INTMAX_WIDTHC23intmax_t 的位宽度
UINT8_WIDTHC23uint8_t 的位宽度
UINT16_WIDTHC23uint16_t 的位宽度
UINT32_WIDTHC23uint32_t 的位宽度
UINT64_WIDTHC23uint64_t 的位宽度
UINTPTR_WIDTHC23uintptr_t 的位宽度
UINTMAX_WIDTHC23uintmax_t 的位宽度
INT_FAST8_WIDTHC23int_fast8_t 的位宽度
INT_FAST16_WIDTHC23int_fast16_t 的位宽度
INT_FAST32_WIDTHC23int_fast32_t 的位宽度
INT_FAST64_WIDTHC23int_fast64_t 的位宽度
INT_LEAST8_WIDTHC23int_least8_t 的位宽度
INT_LEAST16_WIDTHC23int_least16_t 的位宽度
INT_LEAST32_WIDTHC23int_least32_t 的位宽度
INT_LEAST64_WIDTHC23int_least64_t 的位宽度
UINT_FAST8_WIDTHC23uint_fast8_t 的位宽度
UINT_FAST16_WIDTHC23uint_fast16_t 的位宽度
UINT_FAST32_WIDTHC23uint_fast32_t 的位宽度
UINT_FAST64_WIDTHC23uint_fast64_t 的位宽度
UINT_LEAST8_WIDTHC23uint_least8_t 的位宽度
UINT_LEAST16_WIDTHC23uint_least16_t 的位宽度
UINT_LEAST32_WIDTHC23uint_least32_t 的位宽度
UINT_LEAST64_WIDTHC23uint_least64_t 的位宽度

#推荐阅读

创建于 2025/6/16

更新于 2025/6/30